package com.btpj.lib_base.http

import com.btpj.lib_base.data.bean.ApiResponse
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext

/**
 * Repository数据仓库基类，主要用于协程的调用
 *
 */
open class BaseRepository {

    suspend fun <T> apiCall(api: suspend () -> ApiResponse<T>): ApiResponse<T> {
        //withContext改变协程上下文，Dispatchers.IO，协程IO调度器，将阻塞IO任务切换到共享线程池
        return withContext(Dispatchers.IO) { api.invoke() }
    }
}